/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package enterprise.jsf_jpa_war;

import enterprise.ent.City;
import enterprise.ent.Country;
import enterprise.ent.Jugadores;
import enterprise.ent.Torneos;
import enterprise.ent.Usuarios;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.ejb.Stateless;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedProperty;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.ValidatorException;
import javax.inject.Named;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import javax.transaction.UserTransaction;
import org.primefaces.model.LazyDataModel;

/**
 *
 * @author JAVIER
 */
@Named
public class busquedaBean{
 
    
    @PersistenceContext 
    private EntityManager em;
    
    public String pbusqueda;
    
    public List<Torneos> vListaTorneos;
    
    public List<Jugadores> vListaJugadores;
    
    public Integer vNumTorneos;

    public Integer getvNumTorneos() {
        return vNumTorneos;
    }

    public void setvNumTorneos(Integer vNumTorneos) {
        this.vNumTorneos = vNumTorneos;
    }

    public Integer getvNumJugadores() {
        return vNumJugadores;
    }

    public void setvNumJugadores(Integer vNumJugadores) {
        this.vNumJugadores = vNumJugadores;
    }
    public Integer vNumJugadores;
    
    public List<Torneos> getvListaTorneos() {
        return vListaTorneos;
    }

    public void setvListaTorneos(List<Torneos> vListaTorneos) {
        this.vListaTorneos = vListaTorneos;
    }

    public List<Jugadores> getvListaJugadores() {
        return vListaJugadores;
    }

    public void setvListaJugadores(List<Jugadores> vListaJugadores) {
        this.vListaJugadores = vListaJugadores;
    }

    public String getPbusqueda() {
        return pbusqueda;
    }
    public void setPbusqueda(String Pbusqueda) {
        this.pbusqueda = pbusqueda;
    }
    
    public void resultadosBusqueda(){
        
        System.out.println("11 pbusqeuda es igual a: " + pbusqueda);
        
        vListaTorneos = findAllTorneosLike();
        vListaJugadores = findAllJugadoresLike();
        
        vNumTorneos = vListaTorneos.size();
        vNumJugadores = vListaJugadores.size();
        
        //por ultimo establece la variable spagina a "buqueda"
        Map sMap;
        sMap = FacesContext.getCurrentInstance().getExternalContext().getSessionMap();
        BeanMenu bm = (BeanMenu) sMap.get("beanMenu");
        bm.spagina = "busqueda";
        
    }
    
    public List<Torneos> findAllTorneosLike() {
        Query query = em.createNamedQuery("Torneos.findByLike");
        String paramLike = "%".concat(pbusqueda.concat("%"));
        System.out.println("22 pbusqeuda es igual a: " + pbusqueda);
        System.out.println("22 parametro: " + paramLike);
        //String paramLike = pbusqueda;
        query.setParameter("pbusqueda", paramLike);

        List<Torneos> tmpTorneos = query.getResultList();
        return tmpTorneos;
        
    }
    public List<Jugadores> findAllJugadoresLike() {
        Query query = em.createNamedQuery("Jugadores.findByLike");
        String paramLike = "%".concat(pbusqueda.concat("%"));
        query.setParameter("pbusqueda", paramLike);
        List<Jugadores> tmpJugadores = query.getResultList();
        return tmpJugadores;
    }
    public String findFotoUsuarioId(Integer IdUsuario) {
        Query query = em.createNamedQuery("Usuarios.findByIdUsuario");
        query.setParameter("idUsuario", IdUsuario);
        Usuarios usuario = (Usuarios)query.getSingleResult();
        return usuario.getUserFoto();
    }
    
    public void validaStringBusqueda(FacesContext context, UIComponent component,Object value) throws ValidatorException {
        String valBusqueda = (String) value; // the value will be the value from the model after the Apply-Request-Values phase is complete
        if (valBusqueda.length() < 3 || valBusqueda == null) {
            
            System.out.println("salta el error de validacion de busqueda!");
            
            throw new ValidatorException(new FacesMessage(
                FacesMessage.SEVERITY_ERROR, "Minimo 3 caracteres...",null));
        }else{
            pbusqueda = valBusqueda;
        }
    }
 
}
